#include "my_inc/main_login.h"
#include "photos.h"
#include <dirent.h>
#include <sys/types.h>

void photos(face_p head)
{
    face_p temp         = faceinsertend(head, "相册");
    lv_obj_t * img_main = lv_img_create(temp->screen);
    lv_img_set_src(img_main, "A:img/main_face.png");
    lv_obj_set_size(img_main, 800, 480);

    // 定义网格列和行的尺寸数组
    static lv_coord_t col_dsc_pho[] = {180, 180, 180, LV_GRID_TEMPLATE_LAST}; // col_dsc: 定义4列，每列宽度70像素
    static lv_coord_t row_dsc_pho[] = {180, 180, 180, LV_GRID_TEMPLATE_LAST}; // row_dsc: 定义2行，每行高度50像素
    lv_obj_t * cont_pho             = lv_obj_create(temp->screen);            // 创建容器对象
    // lv_obj_move_background(cont_pho);
    // lv_obj_clear_flag(cont_pho, LV_OBJ_FLAG_SCROLLABLE);                       // ⭐️ 关键代码：禁用滚动
    lv_obj_set_style_bg_color(cont_pho, lv_color_hex(0xFFFFFF), LV_PART_MAIN); // 设置背景色
    lv_obj_set_style_bg_opa(cont_pho, LV_OPA_0, LV_PART_MAIN);                 // 只设置背景的透明度
    lv_obj_set_style_grid_column_dsc_array(cont_pho, col_dsc_pho, 0);          // 设置列和行的尺寸数组
    lv_obj_set_style_grid_row_dsc_array(cont_pho, row_dsc_pho, 0);             // 设置列和行的尺寸数组
    lv_obj_set_style_pad_column(cont_pho, 50, LV_PART_MAIN);                   // 设置网格容器中列与列之间的间距
    // lv_obj_set_style_pad_row(cont_pho, 0, LV_PART_MAIN);                       // 设置网格容器中行与行之间的间距
    lv_obj_set_size(cont_pho, 720, 480); // 设置容器大小(800x440)
    // lv_obj_align_to(cont_pho, cont, LV_ALIGN_OUT_LEFT_MID, 0, 0);  // 左边20像素距离
    lv_obj_align(cont_pho, LV_ALIGN_TOP_LEFT, 0, 0);
    lv_obj_set_style_pad_all(cont_pho, 0, LV_PART_MAIN); // 去除内边距
    // lv_obj_set_style_pad_all(cont_pho, 2, LV_PART_MAIN); // 容器内边距2px
    lv_obj_set_layout(cont_pho, LV_LAYOUT_GRID); // 设置布局为网格布局 LV_LAYOUT_GRID

    int count = 0;
    for(size_t i = 0; i < 3; i++) {
        for(size_t j = 0; j < 3; j++) {
            lv_obj_t * obj = lv_obj_create(cont_pho);
            lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE);       // ⭐️ 关键代码：禁用滚动
            lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN);  // 边框宽度
            lv_obj_set_style_bg_opa(obj, LV_OPA_0, LV_PART_MAIN); // 只设置背景的透明度
            lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, j, 1, LV_GRID_ALIGN_STRETCH, i, 1);

            char p_name[30];
            sprintf(p_name, "A:img/size/_%d.png", ++count);
            if(p_name != NULL) {
                lv_obj_t * img_obj = lv_img_create(obj);
                lv_obj_center(img_obj);
                lv_img_set_src(img_obj, p_name);

                lv_obj_t * labell = lv_label_create(obj);
                char num_str[10];
                snprintf(num_str, sizeof(num_str), "%d", count);
                lv_label_set_text(labell, num_str);
                lv_obj_add_flag(labell, LV_OBJ_FLAG_HIDDEN); // 隐藏OBJ

                img_p img_temp    = malloc(sizeof(img_t));
                img_temp->temp    = temp;
                const char * text = lv_label_get_text(labell);
                int number        = atoi(text);
                img_temp->number  = number;
                lv_obj_add_event_cb(obj, amg, LV_EVENT_CLICKED, img_temp); // 添加按钮事件
            } else {
                // 处理图片不存在的情况
                lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); // 隐藏OBJ
            }
        }
    }
    count = 0;

    lv_obj_t * obj = lv_obj_create(temp->screen);
    lv_obj_set_style_pad_all(obj, 0, LV_PART_MAIN); // 去掉默认的内补 20
    lv_obj_set_size(obj, 80, 480);
    lv_obj_set_pos(obj, 720, 0);
    lv_obj_set_style_bg_opa(obj, LV_OPA_30, LV_PART_MAIN); // 只设置背景的透明度

    lv_obj_t * btn_home = lv_btn_create(obj);
    lv_obj_center(btn_home);
    lv_obj_t * home = lv_label_create(btn_home);
    lv_label_set_text(home, LV_SYMBOL_HOME);
    lv_obj_add_event_cb(btn_home, home_pho, LV_EVENT_CLICKED, head); // 添加登录按钮事件

    lv_obj_t * btn_ref = lv_btn_create(obj);
    lv_obj_align(btn_ref, LV_ALIGN_TOP_MID, 0, 25);
    lv_obj_t * ref = lv_label_create(btn_ref);
    lv_label_set_text(ref, LV_SYMBOL_REFRESH);
    // lv_obj_add_event_cb(btn_ref, ref_pho, LV_EVENT_CLICKED, cont_pho); // 添加登录按钮事件
    // 在 photos.c 中找到 btn_ref 的事件绑定代码，替换为：
    ref_data_t * ref_data = malloc(sizeof(ref_data_t));
    ref_data->cont_pho    = cont_pho;                                  // 传递容器
    ref_data->photo_page  = temp;                                      // 传递相册页面节点（temp）
    lv_obj_add_event_cb(btn_ref, ref_pho, LV_EVENT_CLICKED, ref_data); // 传递结构体
}
